This invention relates to, and the following discussion assumes skill in, the design of integrated circuit chip floorplan, layout or topography and in particular in the use of electronic design automation tools capable of place and route design.
Multiple giga-hertz frequency integrated circuit designs contain complex distribution networks for clock control logic. From a centralized source circuit, clock control signals are distributed throughout the design through multiple levels of staging latches to support high frequency operation. The number of levels of staging latches is defined by the chip timing architect and can be no more or no less than the exact number of levels defined. Clock control signals must switch at the highest frequency available (usually the Phase Locked Loop—PLL—oscillator frequency itself) to support the start and stop requirements for the system. To meet these difficult timing constraints, staging latches are placed at optimal locations throughout the chip and the clock control signals are distributed through these latches to meet the timing requirements of these clock control signals. Physical abstracts for logic elements exist at various locations throughout the chip floorplan creating obstacles (physical barriers) which these clock control signals must navigate around in order to provide clock controls to all necessary pin destinations throughout the chip. The location of these abstracts will likely be non-symmetrical creating an imbalanced distribution network requirement for these clock control signals as they propagate through the staging network across the chip.
Traditionally the method of creating the staging distribution across the whole chip with staging latches has been a manual process. Determining the distribution network requires knowledge of the location of all abstract blockages which will interfere with the placement of these latches and the routing and connections between them. Physical abstract location information can be found in the “Physical Layout” using a Cadence Viewer program. A designer's expertise is required in understanding what is shown by the Cadence Viewer and visually determining the most appropriate routes around existing abstracts to place latches as close to the required pin connections as possible. Each destination pin connection must contain the same exact number of staging latches between the centralized source circuit and the destination pin to meet the architectural requirements of the design. Writing a complete descriptive of the final routing solution conceived of by the designer required manually writing Hardware Description Language (HDL) which contains the staging latches and all connections from the source in the centralized source circuit to each individual destination sink pin across the whole chip. Creating this HDL is a time consuming and error prone task which requires knowledge of both the logical structure of the chip as well as the physical layout of the chip floorplan. Only an experienced design person would possess these skills. Once the logical description of the latch distribution had been created, additional placement information must also be provided to the chip integrator indicating where each latch in the logical HDL descriptive should be placed. HDL contains no physical placement information. Traditionally physical information is included in HDL by manually adding X, Y coordinates to the latch names in the HDL code. As each generation of chips has grown more complex, the number of staging latches in the distribution network has grown greatly. In the current generation of microprocessor chips the number of staging latches is counted in the thousands and the number of pins requiring these clock control signals is also in the thousands, making the traditional method of completing this work effort almost impossible in a reasonable amount of time.
The most recent generation of microprocessors used several software tools (written in PERL) which created a staging structure in HDL from a table based input file. The table (plat_staging.tbl) was constructed manually by defining in a simple language the structure of the staging latch distribution network which would be created in the HDL. i.e. root staging tree description with all necessary branches to complete the staging network. Fanout was taken into account and appropriate cloning of latches was done where appropriate to support loading and fanout. A second software tool accessed and searched the chip level Physical Layout for appropriate destination sink pins and created a connection file (plat_connection.lst) that defined connections between the latches created in the 1st step and the destination pins requiring a control signal. This file was then applied to the source HDL (via a PERL script) to insert and connect the staging network to all required sink pins in the design (plat_staging.vhdl). Although a significant step forward from the traditional method above, this process was still time consuming and did not create an optimal solution to a complex distribution problem. One inherent problem with this method was the “two pass” requirement. As the design progressed additional destination pins appeared in the design. Initially these pins would not have a physical location associated with them in the Physical Layout. The physical location is assigned by the integrator after creating the Physical Layout. Without physical location information it is impossible to determine the appropriate staging latch to connect to each new destination pin. The solution was to create an initial Physical Layout and define pin locations for all new destination sink pins, then pass the Physical Layout back to the tools to determine the appropriate latch connection for all new pins. Then a second Physical Layout was created with the final staging and pin connection solution. This two pass process was time consuming and was still not efficient because the original table which defined the staging distribution network to be created was itself manually created, requiring manual intervention for every change to the design structure.